package com.common.platform.base.config.database;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;

import java.util.Date;

public class AutoFullHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        if(metaObject.hasGetter(getCreateTimeFieldName())){
            Object createTime = getFieldValByName(getCreateTimeFieldName(),metaObject);
            if(createTime==null){
                setFieldValByName(getCreateTimeFieldName(),new Date(),metaObject);
            }
        }
        if(metaObject.hasGetter(getCreateUserFieldName())){
            Object createUser = getFieldValByName(getCreateUserFieldName(),metaObject);
            if(createUser==null){
                setFieldValByName(getCreateUserFieldName(),getUserUniqueId(),metaObject);
            }
        }
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        if(metaObject.hasGetter(getUpdateTimeFieldName())){
            setFieldValByName(getUpdateTimeFieldName(),new Date(),metaObject);
        }
        if(metaObject.hasGetter(getUpdateUserFieldName())){
            setFieldValByName(getUpdateUserFieldName(),getUserUniqueId(),metaObject);
        }
    }
    /**
     * 获取跟新时间字段的名称 非数据库中的字段名
     */
    protected String getUpdateTimeFieldName(){
        return "updateTime";
    }
    /**
     * 获取跟新人员字段的名称 非数据库中的字段名
     */
    protected String getUpdateUserFieldName(){
        return "updateUser";
    }
    /**
     * 获取创建时间字段的名称 非数据库中的字段名
     */
    protected String getCreateTimeFieldName(){
        return "createTime";
    }
    /**
     * 获取创建人员字段的名称 非数据库中的字段名
     */
    protected String getCreateUserFieldName(){
        return "createUser";
    }
    /**
     * 获取用户唯一的Id
     */
    protected Object getUserUniqueId(){
        return "";
    }
}
